Skip to content

[BE] SISC1-231 [FIX] 날짜 비교 형식 수정 및 dto 반경값 수정#160

Merged
Kosw6 merged 2 commits intomainfrom
SISC1-231-BE-날짜-비교-형식-수정
Dec 3, 2025

Hidden character warning

The head ref may contain hidden characters: "SISC1-231-BE-\ub0a0\uc9dc-\ube44\uad50-\ud615\uc2dd-\uc218\uc815"
Merged

[BE] SISC1-231 [FIX] 날짜 비교 형식 수정 및 dto 반경값 수정#160
Kosw6 merged 2 commits intomainfrom
SISC1-231-BE-날짜-비교-형식-수정

Conversation

@ochanhyeok
Copy link
Contributor

@ochanhyeok ochanhyeok commented Dec 3, 2025

Summary by CodeRabbit

릴리스 노트

  • New Features

    • 위치 정보 응답에 반경 정보가 추가되었습니다.
  • Refactor

    • 내부 시간 처리 로직이 최적화되었습니다.

✏️ Tip: You can customize this high-level summary in your review settings.

@coderabbitai
Copy link

coderabbitai bot commented Dec 3, 2025

워크스루

두 개의 출석 관련 서비스에서 코드 정리 및 응답 확장이 이루어졌습니다. AttendanceService는 별도의 LocalDate와 LocalTime 호출을 단일 LocalDateTime.now()로 통합하고, AttendanceSessionService는 위치 응답에 radiusMeters 필드를 추가했습니다.

변경 사항

동향 / 파일(들) 요약
출석 서비스 리팩토링
backend/src/main/java/org/sejongisc/backend/attendance/service/AttendanceService.java
LocalDateTime.now()으로 통합하여 checkDate와 checkTime을 파생시킴. 날짜 및 시간 검증 로그와 반환 경로를 현재 시간 객체로 업데이트.
출석 세션 응답 확장
backend/src/main/java/org/sejongisc/backend/attendance/service/AttendanceSessionService.java
AttendanceSessionResponse 변환 시 LocationInfo에 radiusMeters 필드 추가. Javadoc 주석 업데이트.

예상 코드 리뷰 노력

🎯 1 (Trivial) | ⏱️ ~4분

  • AttendanceService의 LocalDateTime 리팩토링은 기계적이고 일관된 변경으로 로직 복잡도가 낮음
  • AttendanceSessionService의 필드 추가는 직관적인 응답 확장

관련 가능성이 있는 PR

제안된 리뷰어

  • discipline24

🐰✨ 이제 한 번의 맥박으로,

시간은 통일되어 흐르고,

거리 정보는 더욱 풍성해져,

출석 기록은 더욱 정확하게 춤을 춥니다!

코드는 깔끔하고, 마음은 가볍고— 🌙

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed PR 제목이 변경사항의 주요 내용을 명확하게 설명하고 있습니다. 날짜 비교 형식 수정과 DTO 반경값 수정이라는 두 가지 주요 변경사항을 정확히 요약합니다.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch SISC1-231-BE-날짜-비교-형식-수정

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
backend/src/main/java/org/sejongisc/backend/attendance/service/AttendanceService.java (1)

142-142: 검증 시점과 기록 시점의 타임스탬프 불일치를 확인하세요.

Line 54에서 캡처한 통합 타임스탬프 now를 검증에 사용하고 있지만, 여기서는 새로운 LocalDateTime.now()를 호출하여 출석 기록을 저장하고 있습니다. 검증 시점과 실제 기록되는 시점 사이에 시간 차이가 발생할 수 있습니다.

일관성을 위해 검증에 사용된 동일한 now 타임스탬프를 사용하는 것을 권장합니다:

         Attendance attendance = Attendance.builder()
                 .user(user)
                 .attendanceSession(session)
                 .attendanceRound(round)
                 .attendanceStatus(status)
-                .checkedAt(java.time.LocalDateTime.now())
+                .checkedAt(now)
                 .awardedPoints(session.getRewardPoints())
                 .checkInLocation(userLocation)
                 .build();
🧹 Nitpick comments (1)
backend/src/main/java/org/sejongisc/backend/attendance/service/AttendanceSessionService.java (1)

228-244: 위치 재설정 시 반경 기본값(0 vs 100) 주석/구현 불일치 가능성

메서드 주석에는 “반경은 기존 값 유지 또는 0으로 설정”이라고 되어 있지만, 실제 구현은 기존 값이 없을 때 100을 기본값으로 사용하고 있습니다.
기획 의도가 0인지 100인지 한번 확인 후,

  • 의도가 0이라면 기본값을 0으로 변경하거나
  • 의도가 100이라면 주석을 100으로 수정

중 하나로 맞춰 주시면 유지보수 시 혼동을 줄일 수 있을 것 같습니다.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between be1865d and 1ae376d.

📒 Files selected for processing (2)
  • backend/src/main/java/org/sejongisc/backend/attendance/service/AttendanceService.java (3 hunks)
  • backend/src/main/java/org/sejongisc/backend/attendance/service/AttendanceSessionService.java (2 hunks)
🔇 Additional comments (4)
backend/src/main/java/org/sejongisc/backend/attendance/service/AttendanceSessionService.java (2)

271-274: Javadoc에 radiusMeters 추가 반영 👍

위치 정보에 radiusMeters 포함을 명시해서 실제 DTO 스키마와 주석이 일관되게 맞춰졌습니다. 추후 API 문서/프론트 확인에도 도움이 될 것 같습니다.


279-283: LocationInfo에 radiusMeters 매핑 추가 적절

session.getLocation().getRadiusMeters()를 그대로 DTO로 전달하는 방식이라 기존 로직에 영향을 주지 않으면서 응답 필드만 확장되고, location == null 처리도 그대로 유지되어 있어 문제 없어 보입니다.

backend/src/main/java/org/sejongisc/backend/attendance/service/AttendanceService.java (2)

54-56: 시간 일관성 개선이 우수합니다!

단일 LocalDateTime.now()를 캡처하여 checkDatecheckTime을 도출하는 방식은 중요한 개선사항입니다. 이전에 LocalDate.now()LocalTime.now()를 별도로 호출했을 경우, 자정 경계에서 두 호출 사이에 날짜가 바뀌는 레이스 컨디션이 발생할 수 있었습니다. 이 변경으로 모든 검증 로직이 동일한 시점을 기준으로 수행됩니다.


63-64: 로그 개선이 적절합니다.

통합된 now 타임스탬프를 로그에 표시하여 검증 시점의 전체 날짜와 시간을 함께 기록하도록 개선되었습니다. 디버깅 시 더 명확한 정보를 제공합니다.

Also applies to: 76-76, 84-85

@Kosw6 Kosw6 merged commit 29ab579 into main Dec 3, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants